// let声明的变量只在所在块级区域内有效
// let不会被预解析变量提升
// var命令会被预解析发生变量提升，变量可以在声明之前使用，值为undefined
// 安装规范，一般应该先声明后使用
// 为了纠正这种现象，let命令改变了语法行为，它所声明的变量一定要先声明才能使用，否则就报错
// {
//     var name = '张三';
//     let age = 10;
//     console.log(age); //let声明的age变量只能在当前块作用域中有效,全局声明的可以在其他块中使用
// }
// console.log(name);
// console.log(age); //报错 age is not defined
// console.log(age);
// var age = 10;
// console.log(age); //age is not defined
// let声明的变量，不存在预解析的变量提升，所以不能在声明前使用，必须先声明后使用
// let age = 10;
// let age = 19;
// console.log(age);
// let不允许在相同作用域内重复声明同一个变量
// identifier 标识符
//  already 已经
// declared 声明
// {
    // 相同作用域，let不允许重复声明同一个标识符变量
    // let a = 10;
    // let a = 20;
    // console.log(a); \
// }
// var 可以重复声明同标识符变量，但是后声明的会覆盖前面相同的
// var a = 10;
// var a = 20;
// console.log(a);  // 20